Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Віртуальні функції.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Не вказано
Кафедра:
Інформаційних систем та мереж (ІСМ)

Інформація про роботу

Рік:
2008
Тип роботи:
Лабораторна робота
Предмет:
Основи програмування та алгоритмічні мови
Група:
КН-3

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій Кафедра ІСМ Звіт про виконання лабораторної роботи №6 на тему: „Віртуальні функції” Виконав: студент групи КН-3 Львів – 2008 Мета роботи: вивчення способів та механізмів наслідування класів з використанням віртуальних функцій. Завдання для роботи Розробити програму на мові С++ з використанням класів: робота з рядками символів. Розробити клас, похідний до базового, використати віртуальні функції. Текст програми #include <iostream.h> #define MAX_STR_LEN 256 class MyString { protected: char *p; int iLen; public: MyString(); MyString(MyString &MyS); MyString(char *szSource); ~MyString(); void StrCpy(char *szSource); void StrCpyN(char *szSource, int n); void StrCat(char *szSource); void StrCatN(char *szSource, int n); char *GetStr(void); int GetLen(void); friend MyString operator + (MyString MyS1, MyString MyS2); void operator ()(MyString MyS); char & operator [] (int index); friend istream & operator >> (istream &is, MyString &MyS); friend ostream & operator << (ostream &os, MyString &MyS); virtual void Input(int iLen); virtual void Print(bool bNewLine); }; class String: public MyString { public: String(): MyString() {} String(String &S): MyString(S) {} String(char *szSource): MyString(szSource) {} ~String() {if (iLen) delete[] p; iLen = 0;} virtual void Input(int iLen); virtual void Print(bool bNewLine); }; MyString::MyString() { p = NULL; iLen = 0; } MyString::MyString(MyString &MyS) { iLen = MyS.GetLen(); p = new char [iLen + 1]; for (int i = 0; i < iLen; i++) p[i] = MyS.GetStr()[i]; p[iLen] = '\0'; } MyString::MyString(char *szSource) { StrCpy(szSource); } MyString::~MyString() { if (iLen) delete[] p; iLen = 0; } void MyString::StrCpy(char *szSource) { for (int n = 0; szSource[n] != '\0'; n++); StrCpyN(szSource, n); return; } void MyString::StrCpyN(char *szSource, int n) { if (iLen) delete[] p; for (iLen = 0; szSource[iLen] != '\0'; iLen++); if (n < iLen) iLen = n; if (iLen) { p = new char [iLen + 1]; for (int i = 0; i < iLen; i++) p[i] = szSource[i]; p[i] = '\0'; } return; } void MyString::StrCat(char *szSource) { for (int n = 0; szSource[n] != '\0'; n++); StrCatN(szSource, n); return; } void MyString::StrCatN(char *szSource, int n) { if (iLen == 0) { StrCpyN(szSource, n); } else { for (int iSourceLen = 0; szSource[iSourceLen] != '\0'; iSourceLen++); char *old_p = new char [iLen]; for (int i = 0; i < iLen; i++) old_p[i] = p[i]; delete[] p; if (n < iSourceLen) iSourceLen = n; p = new char [iLen + iSourceLen + 1]; for (i = 0; i < iLen; i++) p[i] = old_p[i]; delete[] old_p; for (i = iLen; i < (iLen + iSourceLen); i++) p[i] = szSource[i - iLen]; iLen += iSourceLen; p[iLen] = '\0'; } return; } char *MyString::GetStr(void) { return p; } int MyString::GetLen(void) { return iLen; } MyString operator + (MyString MyS1, MyString MyS2) { MyString MyS3(MyS1); MyS3.StrCat(MyS2.GetStr()); return MyS3; } void MyString::operator ()(MyString MyS) { StrCpy(MyS.GetStr()); return; } char & MyString::operator [] (int index) { if ((index < 0) || (index > iLen)) return p[iLen]; return p[index]; } istream & operator >> (istream &is, MyString &MyS) { if (MyS.iLen) delete[] MyS.p; MyS.p = new char [MAX_STR_LEN]; is>>MyS.p; for (MyS.iLen = 0; MyS.p[MyS.iLen] != '\0'; MyS.iLen++); return is; } ostream & operator << (ostream &os, MyString &MyS) { os<<MyS.p; return os; } void MyString::Input(int iLen = MAX_STR_LEN) { if (this->iLen) delete[] p; p = new char [iLen]; cin>>p; for (this->iLen = 0; p[this->iLen] != '\0'; this->iLen++); return; } void MyString::Print(bool bNewLine = true) { cout<<p; if (bNewLine) cout<<endl; return; } void String::Input(int iLen = MAX_STR_LEN) { if (this->iLen) delete[] p; p = new char [iLen]; cout<<"Input: "; // cin>>p; for (this->iLen = 0; p[this->iLen] != '\0'; this->iLen...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини